﻿using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using WebArchivosTelefonica.Jerarquias;
using System.Drawing;
using System.Collections.Generic;

namespace WebArchivosTelefonica.Jerarquias
{
    /// <summary>
    /// Extension de clase de entidad linq de Documento para implementar la 
    /// interfaz de IEntidadLinqDocumento
    /// </summary>
    public partial class Documento : IEntidadLinqDocumento
    {
        /// <summary>
        /// Indica si existe o no el documento
        /// </summary>
        public bool ExisteDocumento
        {
            get
            {
                return this.Archivo != null;
            }
        }
        /// <summary>
        /// Indica si existe o no el documento
        /// </summary>
        public bool NoExisteDocumento
        {
            get
            {
                if (Archivo != null)
                {
                    return false;
                }
                else
                {
                    return true;
                }
            }
        }
        /// <summary>
        /// propieda malparidos
        /// </summary>
        public Color ColorTexto
        {
            get
            {
                return System.Drawing.Color.Red;
            }
        }
        /// <summary>
        /// Estado Revisado Tes
        /// </summary>
        public bool EstadoRevisadoTes
        {
            get
            {
                return false;//return (IdEstadoDocumento == 2);
            }
            set
            {
                //if (value)
                    //IdEstadoDocumento = 2;
            }
        }
        /// <summary>
        /// Estado Aprobado Tes
        /// </summary>
        public bool EstadoAprobadoTes
        {
            get
            {
                return false;// (IdEstadoDocumento == 3);
            }
        }
        /// <summary>
        /// Estado Revisado Cliente
        /// </summary>
        public bool EstadoRevisadoCliente
        {
            get
            {
                return false;//this.IdEstadoDocumento == 4;
            }
        }
        /// <summary>
        /// Estado Aprobado Cliente
        /// </summary>
        public bool EstadoAprobadoCliente
        {
            get
            {
                return false;//return this.IdEstadoDocumento == 5;
            }
        }
        /// <summary>
        /// Estado Aprobado Tes
        /// </summary>
        public bool EstadoReRevisadoTes
        {
            get
            {
                return false;//(IdEstadoDocumento == 6);
            }
            set
            {
                //if (value)
                //    IdEstadoDocumento = 6;
            }

        }

        /// <summary>
        /// Estado Aprobado Tes
        /// </summary>
        public bool EstadoReAprobadoTes
        {
            get
            {
                return false;//(IdEstadoDocumento == 7);
            }
        }
        /// <summary>
        /// Estado Revisado Cliente
        /// </summary>
        public bool EstadoReRevisadoCliente
        {
            get
            {
                return false;//this.IdEstadoDocumento == 8;
            }
        }
        /// <summary>
        /// Estado Aprobado Cliente
        /// </summary>
        public bool EstadoReAprobadoCliente
        {
            get
            {
                return false;//this.IdEstadoDocumento == 9;
            }
        }
        /// <summary>
        /// Propiedad que describe el nombre de la carpeta 
        /// continente del documento
        /// </summary>
        public string NombreCarpeta
        {
            get
            {
                DataClassesArbolDataContext contexto = new DataClassesArbolDataContext();
                return (contexto.JerarquiaCarpetas.Single(carpeta => carpeta.Id == this.IdJerarquiaCarpeta)).Nombre;
            }
        }
        /// <summary>
        /// Propiedad que describe el candidato al 
        /// que pertenece el documento
        /// </summary>
        public string NombreCandidato
        {
            get
            {
                DataClassesArbolDataContext contexto = new DataClassesArbolDataContext();
                return contexto.AsociacionCandidatoDocumentos.Single(x => x.idDocumento == this.Id).Candidato.Nombre;
            }
        }
        /// <summary>
        /// propiedad que describe el nombre del 
        /// Estado del Documento Asociado
        /// </summary>
        public string Estado
        {
            get
            {
                DataClassesArbolDataContext dc = new DataClassesArbolDataContext();

                List<EstadoDocumento> estado =  dc.EstadoDocumentos.Where(x => x.Id == this.IdEstadoDocumentoSeleccionado).ToList();
                
                if (estado.Count > 0)
                {
                    return estado[0].Nombre;
                }
                else
                {
                    return "Ninguno";
                }
            }
        }

		  /// <summary>
		  /// Propiedad que describe el candidato al 
		  /// que pertenece el documento
		  /// </summary>
		  public Guid IdCandidato
		  {
			  get
			  {
				  DataClassesArbolDataContext contexto = new DataClassesArbolDataContext();
				  
				  AsociacionCandidatoDocumento asociacion = contexto.AsociacionCandidatoDocumentos.ToList().Find(x => x.idDocumento == this.Id);

				  if (asociacion != null)
					  return asociacion.idCandidato;
				  else
					  return Guid.Empty;
			  }
		  }

		  /// <summary>
		  /// Propiedad que trae el nombre del documentotag asociado
		  /// </summary>
		  public string NombreTag
		  {
			  get
			  {
				  DataClassesArbolDataContext contexto = new DataClassesArbolDataContext();
				  if (this.IdDocumentoTag != null)
					  return contexto.DocumentoTags.Single(x => x.id == this.IdDocumentoTag).Nombre;
				  else
					  return null;
			  }
		  }
    }
}
